SlideShare una empresa de Scribd logo
Groovy&Grails: desarrollorápido de aplicaciones Actualización del profesorado de la familia profesional Informática y Comunicaciones 9 de Septiembre de 2010
¿QuéesGroovy&Grails?	 Combinación perfecta para el desarrollorápido de aplicaciones Groovy Lenguaje de programación Grails Entornocompleto de desarrollo (framework MVC, base de datos, tests, contenedor web) Groovy&Grails:desarrollo rápido de aplicaciones-2 © 2010 CEFIRE: Actualización del profesorado
¿Quées Groovy?	 Groovy en ingléssignificagenial Lenguaje de la plataforma Java Lenguaje de programaciónágilydinámico Característicastípicas de lenguajescomo Python, Ruby o Smalltalk Groovy&Grails:desarrollo rápido de aplicaciones-3 © 2010 CEFIRE: Actualización del profesorado
¿Quées Groovy?	 Sintaxistípica de Java Superclase de Java Evita la ceremonia de Java Groovy&Grails:desarrollo rápido de aplicaciones-4 © 2010 CEFIRE: Actualización del profesorado
¿A quiénvadirigido Groovy? A los programadores Java A los programadores de scripts A los programadoreságilesyextremos Groovy&Grails:desarrollo rápido de aplicaciones-5 © 2010 CEFIRE: Actualización del profesorado
Comparando Java y Groovy Java & Groovy Mecanismo de paquetes Sentencias Definición de clasesymétodos Estructuras de control Operadores, asignacionesyexpresiones Manejo de excepciones Declaración de literales Instanciación de objetosyllámadas a métodos ,[object Object]
Nuevasexpresionesyoperadores
Nuevasformas de declararobjetos
Nuevasestructuras de control
Nuevostipos de datos con susoperadoresyexpresiones
Todoes un objetoGroovy&Grails:desarrollo rápido de aplicaciones-6 © 2010 CEFIRE: Actualización del profesorado
Características de Groovy Brevedad del lenguaje Groovy evita la ceremoníaqueacompaña a Java Aumenta la expresividad del lenguaje(se dice más con menos) Importaautomáticamentevariospaquetes Groovy&Grails:desarrollo rápido de aplicaciones-7 © 2010 CEFIRE: Actualización del profesorado
El código de Groovy Declaración de clases class Libro {  	private String titulo Libro (String elTitulo){ titulo = elTitulo 	} 	String getTitulo(){ 		return titulo 	} } Groovy&Grails:desarrollo rápido de aplicaciones-8 © 2010 CEFIRE: Actualización del profesorado
El código de Groovy Scripts en Groovy Librocgg = new Libro('CursoGroovyGrails') assert cgg.getTitulo() == 'CursoGroovyGrails’ assert getTituloAlReves(cgg) == 'sliarGyvoorGosruC' String getTituloAlReves(libro) { titulo = libro.getTitulo() 	return titulo.reverse() } Groovy&Grails:desarrollo rápido de aplicaciones-9 © 2010 CEFIRE: Actualización del profesorado
El código de Groovy GroovyBeans /*Un Bean en Java*/ class Libro{ 	String titulo; 	String getTitulo(){ 		return this.titulo; 	} 	void setTitulo(Stringstr){ this.titulo = new String(str);	 	} } Groovy&Grails:desarrollo rápido de aplicaciones-10 © 2010 CEFIRE: Actualización del profesorado
El código de Groovy GroovyBeans /*Un Bean en Groovy*/ class Libro{ 	String titulo } Groovy&Grails:desarrollo rápido de aplicaciones-11 © 2010 CEFIRE: Actualización del profesorado
El código de Groovy Cadenas de texto GString def part1 = 'groovy' def part2 = ['g','r','a','i','l','s'] assert "me gusta groovy grails" == "me gusta $part1 ${part2.join()}" Groovy&Grails:desarrollo rápido de aplicaciones-12 © 2010 CEFIRE: Actualización del profesorado
El código de Groovy Groovy es un lenguaje que implementa un tipado dinámico de datos Groovy puede encargarse de asignarle el tipo de dato a nuestras variables Groovy&Grails:desarrollo rápido de aplicaciones-13 © 2010 CEFIRE: Actualización del profesorado
El código de Groovy Tipado dinámico de datos def a = 2 //java.lang.Integer def b = 0.4f //java.lang.Float int c = 3 //java.lang.Integer float d = 4 //java.lang.Float Integer e = 6 //java.lang.Integer String f = ‘hola’ //java.lang.String Groovy&Grails:desarrollo rápido de aplicaciones-14 © 2010 CEFIRE: Actualización del profesorado
Estructuras de control en Groovy Los típicosif-else, while, switch y try-catch-finally El bloqueforutiliza la notacionfor (i in x) { cuerpo}  for(i in 1..10) printlni for(i in [1,2,3,4,5,6,7,8,9,10]) printlni Groovy&Grails:desarrollo rápido de aplicaciones-15 © 2010 CEFIRE: Actualización del profesorado
Estructuras de control en Groovy O mediante closures def alumnos = ['Pedro','Miguel','Alejandro','Elena'] alumnos.each{nombre -> printlnnombre} Groovy&Grails:desarrollo rápido de aplicaciones-16 © 2010 CEFIRE: Actualización del profesorado
Groovy en el entorno Java Groovy puede ser ejecutado en la JVM: Compilando con groovyc Sin compilar Groovy&Grails:desarrollo rápido de aplicaciones-17 © 2010 CEFIRE: Actualización del profesorado
GDK: la librería Groovy GDK esunaextensión a la librería JDK Facilita el acceso a base de datosyprocesamiento de XML Extiendelasfuncionalidades de Java Groovy&Grails:desarrollo rápido de aplicaciones-18 © 2010 CEFIRE: Actualización del profesorado
¿Quées Grails? “Grails es un framework para el desarrollo de aplicaciónes web basado en el lenguaje de programación Groovy, que a suvez se basa en la Plataforma Java” Se basa en los paradigmasCoC (Convention over Configuration)yDRY (Don’t Repeat Yourself) Groovy&Grails:desarrollo rápido de aplicaciones-19 © 2010 CEFIRE: Actualización del profesorado
¿Quées Grails? Basado en el patrónModelo Vista Controlador ModeloClases de dominio Controladores Vista Páginas GSP (Groovy Server Pages) Groovy&Grails:desarrollo rápido de aplicaciones-20 © 2010 CEFIRE: Actualización del profesorado
¿Quées Grails? El programador se olvida de determinadosaspectos de configuración Se acortan los tiempos de desarrollo Grails es un framework muyágil Groovy&Grails:desarrollo rápido de aplicaciones-21 © 2010 CEFIRE: Actualización del profesorado
¿Quées Grails? Grails no sóloes un framework de desarrollo web quesigue el patrón MVC, sinoqueesunaplataformacompleta de desarrollo Contenedor/servidor web Gestor de base de datos Empaquetado de la aplicación Realización de tests unitarios, de integración y funcionales Groovy&Grails:desarrollo rápido de aplicaciones-22 © 2010 CEFIRE: Actualización del profesorado
Software de códigoabierto Grails no sufre del síndromeNIH (Not Invented Here)eintegralasmejoressoluciones de software libreparaconseguir un framework muyrobusto Groovy&Grails:desarrollo rápido de aplicaciones-23 © 2010 CEFIRE: Actualización del profesorado
Software de códigoabierto Groovy Lenguajedinámico Potentey flexible Sintaxissencilla Integración con Java Groovy&Grails:desarrollo rápido de aplicaciones-24 © 2010 CEFIRE: Actualización del profesorado
Software de códigoabierto Framework Spring Framework ampliamente utilizado por los desarrolladores Java Muchos años de experiencia Groovy&Grails:desarrollo rápido de aplicaciones-25 © 2010 CEFIRE: Actualización del profesorado
Software de códigoabierto Hibernate Framework de persistenciaobjeto-relacional Es la base de GORM Mapeaclases de dominio contra lastablas de una base de datos Groovy&Grails:desarrollo rápido de aplicaciones-26 © 2010 CEFIRE: Actualización del profesorado
Software de códigoabierto SiteMesh Renderizado HTML Patrón de diseñoDecorator Groovy&Grails:desarrollo rápido de aplicaciones-27 © 2010 CEFIRE: Actualización del profesorado
Software de códigoabierto Frameworks AJAX Script.aculo.us jQuery Prototype Groovy&Grails:desarrollo rápido de aplicaciones-28 © 2010 CEFIRE: Actualización del profesorado
Software de códigoabierto Tomcat Contenedor web No es el únicosobre el quefunciona Grails Groovy&Grails:desarrollo rápido de aplicaciones-29 © 2010 CEFIRE: Actualización del profesorado
Software de códigoabierto HSQLDB Gestor de base de datos Almacenamiento en memoriao en disco Groovy&Grails:desarrollo rápido de aplicaciones-30 © 2010 CEFIRE: Actualización del profesorado
Software de códigoabierto JUnit Framework para la realización de tests unitarios y de integración Muyextendido en Java Groovy&Grails:desarrollo rápido de aplicaciones-31 © 2010 CEFIRE: Actualización del profesorado
Arquitectura Groovy&Grails:desarrollo rápido de aplicaciones-32 © 2010 CEFIRE: Actualización del profesorado
Arquitectura Herramientas en líneade comandos (GANT) Facilita la escritura de código Facilita la gestión de nuestrosproyectos Gant es un sistema de automatización de tareasbasado en Apache Ant Groovy&Grails:desarrollo rápido de aplicaciones-33 © 2010 CEFIRE: Actualización del profesorado
Arquitectura Ejecución de un proyecto en Grails Groovy&Grails:desarrollo rápido de aplicaciones-34 © 2010 CEFIRE: Actualización del profesorado
Características de Grails Scaffolding     “Generaciónautomática de códigoparalascuatrooperacionesbásicas de cualquieraplicación, que son la creación, lectura, ediciónyborrado” Groovy&Grails:desarrollo rápido de aplicaciones-35 © 2010 CEFIRE: Actualización del profesorado
Características de Grails Scaffolding Clase de dominio Groovy&Grails:desarrollo rápido de aplicaciones-36 © 2010 CEFIRE: Actualización del profesorado class Libro{ 	String titulo 	static constraints = {        	title(blank:false) 	} }
Características de Grails Scaffolding dinámico Controlador de la clase Libro Vistas de la clase Libro: creadas al vuelo Groovy&Grails:desarrollo rápido de aplicaciones-37 © 2010 CEFIRE: Actualización del profesorado class LibroController{ def scaffold = Libro  }
Características de Grails Scaffolding estático Controlador de la clase Libro Groovy&Grails:desarrollo rápido de aplicaciones-38 © 2010 CEFIRE: Actualización del profesorado grails generate-all Libro class LibroController{ def index = {…} 	def list = {…} 	def show = {…} def create = {…} 	def save = {…} 	…. }
Características de Grails Scaffolding estático Vistas de la clase Libro · create.gsp · edit.gsp · list.gsp · show.gsp Groovy&Grails:desarrollo rápido de aplicaciones-39 © 2010 CEFIRE: Actualización del profesorado grails generate-all Libro
Características de Grails Tests Tests unitarios Tests de integración Tests funcionales Groovy&Grails:desarrollo rápido de aplicaciones-40 © 2010 CEFIRE: Actualización del profesorado
Características de Grails Mapeoobjeto-relacional GORM (Grails Object Relational Mapping) ,[object Object]

Más contenido relacionado

La actualidad más candente

Spring boot + spock
Spring boot + spockSpring boot + spock
Spring boot + spock
Fátima Casaú Pérez
 
Java poliglota
Java poliglotaJava poliglota
Java poliglota
Domingo Suarez Torres
 
grails.org.mx Primera Reunion
grails.org.mx Primera Reuniongrails.org.mx Primera Reunion
grails.org.mx Primera Reunion
Domingo Suarez Torres
 
Redefiniendo el MVC con Grails
Redefiniendo el MVC con GrailsRedefiniendo el MVC con Grails
Redefiniendo el MVC con Grails
Jose Juan R. Zuñiga
 
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto realJobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto realJobsket
 
Introducción a groovy & grails
Introducción a groovy & grailsIntroducción a groovy & grails
Introducción a groovy & grails
Fátima Casaú Pérez
 
PHP for Android: scripting PHP en Android
PHP for Android: scripting PHP en AndroidPHP for Android: scripting PHP en Android
PHP for Android: scripting PHP en AndroidIrontec
 
HTML5 en el universo Windows (Apps universales)
HTML5 en el universo Windows (Apps universales)HTML5 en el universo Windows (Apps universales)
HTML5 en el universo Windows (Apps universales)
Quique Fdez Guerra
 
El proceso de desarrollo con herramientas Open Source
El proceso de desarrollo con herramientas Open SourceEl proceso de desarrollo con herramientas Open Source
El proceso de desarrollo con herramientas Open Source
Jose Juan R. Zuñiga
 
Webinar 5 net5-2021
Webinar 5 net5-2021Webinar 5 net5-2021
Webinar 5 net5-2021
atSistemas
 

La actualidad más candente (10)

Spring boot + spock
Spring boot + spockSpring boot + spock
Spring boot + spock
 
Java poliglota
Java poliglotaJava poliglota
Java poliglota
 
grails.org.mx Primera Reunion
grails.org.mx Primera Reuniongrails.org.mx Primera Reunion
grails.org.mx Primera Reunion
 
Redefiniendo el MVC con Grails
Redefiniendo el MVC con GrailsRedefiniendo el MVC con Grails
Redefiniendo el MVC con Grails
 
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto realJobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
 
Introducción a groovy & grails
Introducción a groovy & grailsIntroducción a groovy & grails
Introducción a groovy & grails
 
PHP for Android: scripting PHP en Android
PHP for Android: scripting PHP en AndroidPHP for Android: scripting PHP en Android
PHP for Android: scripting PHP en Android
 
HTML5 en el universo Windows (Apps universales)
HTML5 en el universo Windows (Apps universales)HTML5 en el universo Windows (Apps universales)
HTML5 en el universo Windows (Apps universales)
 
El proceso de desarrollo con herramientas Open Source
El proceso de desarrollo con herramientas Open SourceEl proceso de desarrollo con herramientas Open Source
El proceso de desarrollo con herramientas Open Source
 
Webinar 5 net5-2021
Webinar 5 net5-2021Webinar 5 net5-2021
Webinar 5 net5-2021
 

Destacado

Certificaciones tecnológicas
Certificaciones tecnológicasCertificaciones tecnológicas
Certificaciones tecnológicas
Jose Manuel Ortega Candel
 
Seguridad en dispositivos móviles
Seguridad en dispositivos móvilesSeguridad en dispositivos móviles
Seguridad en dispositivos móviles
Jose Manuel Ortega Candel
 
Privacidad internet
Privacidad internetPrivacidad internet
Privacidad internet
Jose Manuel Ortega Candel
 
Certificaciones Tecnológicas: La acreditación del experto
Certificaciones Tecnológicas: La acreditación del expertoCertificaciones Tecnológicas: La acreditación del experto
Certificaciones Tecnológicas: La acreditación del experto
Jose Manuel Ortega Candel
 
Por su seguridad
Por su seguridadPor su seguridad
Por su seguridad
Jose Manuel Ortega Candel
 
Herramientas gestion proyectos
Herramientas gestion proyectosHerramientas gestion proyectos
Herramientas gestion proyectos
Jose Manuel Ortega Candel
 
Kanban
KanbanKanban
Groovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicacionesGroovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicaciones
Fran García
 
Git and git flow
Git and git flowGit and git flow
Git and git flow
Fran García
 
Manual de uso de la web 2.0
Manual de uso de la web 2.0Manual de uso de la web 2.0
Manual de uso de la web 2.0
Domingo Gallardo
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
Domingo Gallardo
 
Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013Opersys inc.
 
Framework de test spock
Framework de test spock Framework de test spock
Framework de test spock
Fran García
 
Metodologías agiles de desarrollo de software
Metodologías agiles de desarrollo de softwareMetodologías agiles de desarrollo de software
Metodologías agiles de desarrollo de software
Domingo Gallardo
 
Testing NodeJS Security
Testing NodeJS SecurityTesting NodeJS Security
Testing NodeJS Security
Jose Manuel Ortega Candel
 
Cuarta Edición del Curso Online de Especialización en Seguridad Informática p...
Cuarta Edición del Curso Online de Especialización en Seguridad Informática p...Cuarta Edición del Curso Online de Especialización en Seguridad Informática p...
Cuarta Edición del Curso Online de Especialización en Seguridad Informática p...
Chema Alonso
 
Configurar y utilizar Latch en Magento
Configurar y utilizar Latch en MagentoConfigurar y utilizar Latch en Magento
Configurar y utilizar Latch en Magento
Chema Alonso
 
Footprinting tools for security auditors
Footprinting tools for security auditorsFootprinting tools for security auditors
Footprinting tools for security auditors
Jose Manuel Ortega Candel
 
Dorking & Pentesting with Tacyt
Dorking & Pentesting with TacytDorking & Pentesting with Tacyt
Dorking & Pentesting with Tacyt
Chema Alonso
 

Destacado (20)

Inteligencia Colectiva
Inteligencia ColectivaInteligencia Colectiva
Inteligencia Colectiva
 
Certificaciones tecnológicas
Certificaciones tecnológicasCertificaciones tecnológicas
Certificaciones tecnológicas
 
Seguridad en dispositivos móviles
Seguridad en dispositivos móvilesSeguridad en dispositivos móviles
Seguridad en dispositivos móviles
 
Privacidad internet
Privacidad internetPrivacidad internet
Privacidad internet
 
Certificaciones Tecnológicas: La acreditación del experto
Certificaciones Tecnológicas: La acreditación del expertoCertificaciones Tecnológicas: La acreditación del experto
Certificaciones Tecnológicas: La acreditación del experto
 
Por su seguridad
Por su seguridadPor su seguridad
Por su seguridad
 
Herramientas gestion proyectos
Herramientas gestion proyectosHerramientas gestion proyectos
Herramientas gestion proyectos
 
Kanban
KanbanKanban
Kanban
 
Groovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicacionesGroovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicaciones
 
Git and git flow
Git and git flowGit and git flow
Git and git flow
 
Manual de uso de la web 2.0
Manual de uso de la web 2.0Manual de uso de la web 2.0
Manual de uso de la web 2.0
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013Working with the AOSP - Linaro Connect Asia 2013
Working with the AOSP - Linaro Connect Asia 2013
 
Framework de test spock
Framework de test spock Framework de test spock
Framework de test spock
 
Metodologías agiles de desarrollo de software
Metodologías agiles de desarrollo de softwareMetodologías agiles de desarrollo de software
Metodologías agiles de desarrollo de software
 
Testing NodeJS Security
Testing NodeJS SecurityTesting NodeJS Security
Testing NodeJS Security
 
Cuarta Edición del Curso Online de Especialización en Seguridad Informática p...
Cuarta Edición del Curso Online de Especialización en Seguridad Informática p...Cuarta Edición del Curso Online de Especialización en Seguridad Informática p...
Cuarta Edición del Curso Online de Especialización en Seguridad Informática p...
 
Configurar y utilizar Latch en Magento
Configurar y utilizar Latch en MagentoConfigurar y utilizar Latch en Magento
Configurar y utilizar Latch en Magento
 
Footprinting tools for security auditors
Footprinting tools for security auditorsFootprinting tools for security auditors
Footprinting tools for security auditors
 
Dorking & Pentesting with Tacyt
Dorking & Pentesting with TacytDorking & Pentesting with Tacyt
Dorking & Pentesting with Tacyt
 

Similar a Groovy&Grails: desarrollo rápido de aplicaciones

Grails en Expo FISI 2011
Grails en Expo FISI 2011Grails en Expo FISI 2011
Grails en Expo FISI 2011
jose diaz
 
Webinar: Groovy y la producttividad para el desarrollador Java
Webinar: Groovy y la producttividad para el desarrollador JavaWebinar: Groovy y la producttividad para el desarrollador Java
Webinar: Groovy y la producttividad para el desarrollador Java
Domingo Suarez Torres
 
Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!
Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!
Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!
Iván López Martín
 
Eleva tu capacidad con Groovy
Eleva tu capacidad con GroovyEleva tu capacidad con Groovy
Eleva tu capacidad con Groovy
Domingo Suarez Torres
 
Jobsket Spring 2GX Madrid
Jobsket Spring 2GX MadridJobsket Spring 2GX Madrid
Jobsket Spring 2GX Madrid
Jobsket
 
Programacion Web UGR - Tema 7.pdf
Programacion Web UGR - Tema 7.pdfProgramacion Web UGR - Tema 7.pdf
Programacion Web UGR - Tema 7.pdf
AnonymousNdBOr4
 
Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!
Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!
Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!
Iván López Martín
 
Swift
SwiftSwift
PHP Con symfony
PHP Con symfonyPHP Con symfony
PHP Con symfony
csalazart
 
Introduction a Groovy
Introduction a  GroovyIntroduction a  Groovy
Introduction a Groovy
Alex Fuentes
 
Introducción a Java FX
Introducción a Java FXIntroducción a Java FX
Introducción a Java FX
Iban Nieto Castillero
 
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011Fátima Casaú Pérez
 
Desarrollo móvil híbrido bien entendido
Desarrollo móvil híbrido bien entendidoDesarrollo móvil híbrido bien entendido
Desarrollo móvil híbrido bien entendido
José Manuel López
 
NET5 el nuevo framework unificado para gobernarlos a todos
NET5 el nuevo framework unificado para gobernarlos a todosNET5 el nuevo framework unificado para gobernarlos a todos
NET5 el nuevo framework unificado para gobernarlos a todos
Santi Macias Rodriguez
 
HTML5 y los desafíos del desarrollo web de HOY
HTML5 y los desafíos del desarrollo web de HOYHTML5 y los desafíos del desarrollo web de HOY
HTML5 y los desafíos del desarrollo web de HOY
Juan Eladio Sánchez Rosas
 
Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web Grails
Esteban Saavedra
 
Taller Groovy
Taller GroovyTaller Groovy
Taller Groovy
Domingo Suarez Torres
 
Remote System Controller with Android technologies
Remote System Controller with Android technologiesRemote System Controller with Android technologies
Remote System Controller with Android technologies
Miguel Garcia Ponce
 
Grails barcamp 2013
Grails barcamp 2013Grails barcamp 2013
Grails barcamp 2013
Carlos Camacho
 
Arquitectura
Arquitectura Arquitectura
Arquitectura
Antonio Manuel
 

Similar a Groovy&Grails: desarrollo rápido de aplicaciones (20)

Grails en Expo FISI 2011
Grails en Expo FISI 2011Grails en Expo FISI 2011
Grails en Expo FISI 2011
 
Webinar: Groovy y la producttividad para el desarrollador Java
Webinar: Groovy y la producttividad para el desarrollador JavaWebinar: Groovy y la producttividad para el desarrollador Java
Webinar: Groovy y la producttividad para el desarrollador Java
 
Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!
Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!
Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!
 
Eleva tu capacidad con Groovy
Eleva tu capacidad con GroovyEleva tu capacidad con Groovy
Eleva tu capacidad con Groovy
 
Jobsket Spring 2GX Madrid
Jobsket Spring 2GX MadridJobsket Spring 2GX Madrid
Jobsket Spring 2GX Madrid
 
Programacion Web UGR - Tema 7.pdf
Programacion Web UGR - Tema 7.pdfProgramacion Web UGR - Tema 7.pdf
Programacion Web UGR - Tema 7.pdf
 
Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!
Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!
Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!
 
Swift
SwiftSwift
Swift
 
PHP Con symfony
PHP Con symfonyPHP Con symfony
PHP Con symfony
 
Introduction a Groovy
Introduction a  GroovyIntroduction a  Groovy
Introduction a Groovy
 
Introducción a Java FX
Introducción a Java FXIntroducción a Java FX
Introducción a Java FX
 
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011
 
Desarrollo móvil híbrido bien entendido
Desarrollo móvil híbrido bien entendidoDesarrollo móvil híbrido bien entendido
Desarrollo móvil híbrido bien entendido
 
NET5 el nuevo framework unificado para gobernarlos a todos
NET5 el nuevo framework unificado para gobernarlos a todosNET5 el nuevo framework unificado para gobernarlos a todos
NET5 el nuevo framework unificado para gobernarlos a todos
 
HTML5 y los desafíos del desarrollo web de HOY
HTML5 y los desafíos del desarrollo web de HOYHTML5 y los desafíos del desarrollo web de HOY
HTML5 y los desafíos del desarrollo web de HOY
 
Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web Grails
 
Taller Groovy
Taller GroovyTaller Groovy
Taller Groovy
 
Remote System Controller with Android technologies
Remote System Controller with Android technologiesRemote System Controller with Android technologies
Remote System Controller with Android technologies
 
Grails barcamp 2013
Grails barcamp 2013Grails barcamp 2013
Grails barcamp 2013
 
Arquitectura
Arquitectura Arquitectura
Arquitectura
 

Último

leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
Leidyfuentes19
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
ItsSofi
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
Emilio Casbas
 
Conceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdfConceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdf
ValeriaAyala48
 
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
espinozaernesto427
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
cj3806354
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
coloradxmaria
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
Desarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdfDesarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdf
samuelvideos
 
maestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdfmaestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdf
JimmyTejadaSalizar
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
SamuelRamirez83524
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
zoecaicedosalazar
 
biogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectosbiogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectos
Luis Enrique Zafra Haro
 
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB  S2. PARA VSATMANUAL DEL DECODIFICADOR DVB  S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
Ing. Julio Iván Mera Casas
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
cofferub
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
ManuelCampos464987
 
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
CesarPazosQuispe
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
Fernando Villares
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
DiegoCampos433849
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
AlejandraCasallas7
 

Último (20)

leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
Conceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdfConceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdf
 
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Desarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdfDesarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdf
 
maestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdfmaestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdf
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
 
biogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectosbiogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectos
 
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB  S2. PARA VSATMANUAL DEL DECODIFICADOR DVB  S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
 
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
 

Groovy&Grails: desarrollo rápido de aplicaciones

  • 1. Groovy&Grails: desarrollorápido de aplicaciones Actualización del profesorado de la familia profesional Informática y Comunicaciones 9 de Septiembre de 2010
  • 2. ¿QuéesGroovy&Grails? Combinación perfecta para el desarrollorápido de aplicaciones Groovy Lenguaje de programación Grails Entornocompleto de desarrollo (framework MVC, base de datos, tests, contenedor web) Groovy&Grails:desarrollo rápido de aplicaciones-2 © 2010 CEFIRE: Actualización del profesorado
  • 3. ¿Quées Groovy? Groovy en ingléssignificagenial Lenguaje de la plataforma Java Lenguaje de programaciónágilydinámico Característicastípicas de lenguajescomo Python, Ruby o Smalltalk Groovy&Grails:desarrollo rápido de aplicaciones-3 © 2010 CEFIRE: Actualización del profesorado
  • 4. ¿Quées Groovy? Sintaxistípica de Java Superclase de Java Evita la ceremonia de Java Groovy&Grails:desarrollo rápido de aplicaciones-4 © 2010 CEFIRE: Actualización del profesorado
  • 5. ¿A quiénvadirigido Groovy? A los programadores Java A los programadores de scripts A los programadoreságilesyextremos Groovy&Grails:desarrollo rápido de aplicaciones-5 © 2010 CEFIRE: Actualización del profesorado
  • 6.
  • 10. Nuevostipos de datos con susoperadoresyexpresiones
  • 11. Todoes un objetoGroovy&Grails:desarrollo rápido de aplicaciones-6 © 2010 CEFIRE: Actualización del profesorado
  • 12. Características de Groovy Brevedad del lenguaje Groovy evita la ceremoníaqueacompaña a Java Aumenta la expresividad del lenguaje(se dice más con menos) Importaautomáticamentevariospaquetes Groovy&Grails:desarrollo rápido de aplicaciones-7 © 2010 CEFIRE: Actualización del profesorado
  • 13. El código de Groovy Declaración de clases class Libro { private String titulo Libro (String elTitulo){ titulo = elTitulo } String getTitulo(){ return titulo } } Groovy&Grails:desarrollo rápido de aplicaciones-8 © 2010 CEFIRE: Actualización del profesorado
  • 14. El código de Groovy Scripts en Groovy Librocgg = new Libro('CursoGroovyGrails') assert cgg.getTitulo() == 'CursoGroovyGrails’ assert getTituloAlReves(cgg) == 'sliarGyvoorGosruC' String getTituloAlReves(libro) { titulo = libro.getTitulo() return titulo.reverse() } Groovy&Grails:desarrollo rápido de aplicaciones-9 © 2010 CEFIRE: Actualización del profesorado
  • 15. El código de Groovy GroovyBeans /*Un Bean en Java*/ class Libro{ String titulo; String getTitulo(){ return this.titulo; } void setTitulo(Stringstr){ this.titulo = new String(str); } } Groovy&Grails:desarrollo rápido de aplicaciones-10 © 2010 CEFIRE: Actualización del profesorado
  • 16. El código de Groovy GroovyBeans /*Un Bean en Groovy*/ class Libro{ String titulo } Groovy&Grails:desarrollo rápido de aplicaciones-11 © 2010 CEFIRE: Actualización del profesorado
  • 17. El código de Groovy Cadenas de texto GString def part1 = 'groovy' def part2 = ['g','r','a','i','l','s'] assert "me gusta groovy grails" == "me gusta $part1 ${part2.join()}" Groovy&Grails:desarrollo rápido de aplicaciones-12 © 2010 CEFIRE: Actualización del profesorado
  • 18. El código de Groovy Groovy es un lenguaje que implementa un tipado dinámico de datos Groovy puede encargarse de asignarle el tipo de dato a nuestras variables Groovy&Grails:desarrollo rápido de aplicaciones-13 © 2010 CEFIRE: Actualización del profesorado
  • 19. El código de Groovy Tipado dinámico de datos def a = 2 //java.lang.Integer def b = 0.4f //java.lang.Float int c = 3 //java.lang.Integer float d = 4 //java.lang.Float Integer e = 6 //java.lang.Integer String f = ‘hola’ //java.lang.String Groovy&Grails:desarrollo rápido de aplicaciones-14 © 2010 CEFIRE: Actualización del profesorado
  • 20. Estructuras de control en Groovy Los típicosif-else, while, switch y try-catch-finally El bloqueforutiliza la notacionfor (i in x) { cuerpo} for(i in 1..10) printlni for(i in [1,2,3,4,5,6,7,8,9,10]) printlni Groovy&Grails:desarrollo rápido de aplicaciones-15 © 2010 CEFIRE: Actualización del profesorado
  • 21. Estructuras de control en Groovy O mediante closures def alumnos = ['Pedro','Miguel','Alejandro','Elena'] alumnos.each{nombre -> printlnnombre} Groovy&Grails:desarrollo rápido de aplicaciones-16 © 2010 CEFIRE: Actualización del profesorado
  • 22. Groovy en el entorno Java Groovy puede ser ejecutado en la JVM: Compilando con groovyc Sin compilar Groovy&Grails:desarrollo rápido de aplicaciones-17 © 2010 CEFIRE: Actualización del profesorado
  • 23. GDK: la librería Groovy GDK esunaextensión a la librería JDK Facilita el acceso a base de datosyprocesamiento de XML Extiendelasfuncionalidades de Java Groovy&Grails:desarrollo rápido de aplicaciones-18 © 2010 CEFIRE: Actualización del profesorado
  • 24. ¿Quées Grails? “Grails es un framework para el desarrollo de aplicaciónes web basado en el lenguaje de programación Groovy, que a suvez se basa en la Plataforma Java” Se basa en los paradigmasCoC (Convention over Configuration)yDRY (Don’t Repeat Yourself) Groovy&Grails:desarrollo rápido de aplicaciones-19 © 2010 CEFIRE: Actualización del profesorado
  • 25. ¿Quées Grails? Basado en el patrónModelo Vista Controlador ModeloClases de dominio Controladores Vista Páginas GSP (Groovy Server Pages) Groovy&Grails:desarrollo rápido de aplicaciones-20 © 2010 CEFIRE: Actualización del profesorado
  • 26. ¿Quées Grails? El programador se olvida de determinadosaspectos de configuración Se acortan los tiempos de desarrollo Grails es un framework muyágil Groovy&Grails:desarrollo rápido de aplicaciones-21 © 2010 CEFIRE: Actualización del profesorado
  • 27. ¿Quées Grails? Grails no sóloes un framework de desarrollo web quesigue el patrón MVC, sinoqueesunaplataformacompleta de desarrollo Contenedor/servidor web Gestor de base de datos Empaquetado de la aplicación Realización de tests unitarios, de integración y funcionales Groovy&Grails:desarrollo rápido de aplicaciones-22 © 2010 CEFIRE: Actualización del profesorado
  • 28. Software de códigoabierto Grails no sufre del síndromeNIH (Not Invented Here)eintegralasmejoressoluciones de software libreparaconseguir un framework muyrobusto Groovy&Grails:desarrollo rápido de aplicaciones-23 © 2010 CEFIRE: Actualización del profesorado
  • 29. Software de códigoabierto Groovy Lenguajedinámico Potentey flexible Sintaxissencilla Integración con Java Groovy&Grails:desarrollo rápido de aplicaciones-24 © 2010 CEFIRE: Actualización del profesorado
  • 30. Software de códigoabierto Framework Spring Framework ampliamente utilizado por los desarrolladores Java Muchos años de experiencia Groovy&Grails:desarrollo rápido de aplicaciones-25 © 2010 CEFIRE: Actualización del profesorado
  • 31. Software de códigoabierto Hibernate Framework de persistenciaobjeto-relacional Es la base de GORM Mapeaclases de dominio contra lastablas de una base de datos Groovy&Grails:desarrollo rápido de aplicaciones-26 © 2010 CEFIRE: Actualización del profesorado
  • 32. Software de códigoabierto SiteMesh Renderizado HTML Patrón de diseñoDecorator Groovy&Grails:desarrollo rápido de aplicaciones-27 © 2010 CEFIRE: Actualización del profesorado
  • 33. Software de códigoabierto Frameworks AJAX Script.aculo.us jQuery Prototype Groovy&Grails:desarrollo rápido de aplicaciones-28 © 2010 CEFIRE: Actualización del profesorado
  • 34. Software de códigoabierto Tomcat Contenedor web No es el únicosobre el quefunciona Grails Groovy&Grails:desarrollo rápido de aplicaciones-29 © 2010 CEFIRE: Actualización del profesorado
  • 35. Software de códigoabierto HSQLDB Gestor de base de datos Almacenamiento en memoriao en disco Groovy&Grails:desarrollo rápido de aplicaciones-30 © 2010 CEFIRE: Actualización del profesorado
  • 36. Software de códigoabierto JUnit Framework para la realización de tests unitarios y de integración Muyextendido en Java Groovy&Grails:desarrollo rápido de aplicaciones-31 © 2010 CEFIRE: Actualización del profesorado
  • 37. Arquitectura Groovy&Grails:desarrollo rápido de aplicaciones-32 © 2010 CEFIRE: Actualización del profesorado
  • 38. Arquitectura Herramientas en líneade comandos (GANT) Facilita la escritura de código Facilita la gestión de nuestrosproyectos Gant es un sistema de automatización de tareasbasado en Apache Ant Groovy&Grails:desarrollo rápido de aplicaciones-33 © 2010 CEFIRE: Actualización del profesorado
  • 39. Arquitectura Ejecución de un proyecto en Grails Groovy&Grails:desarrollo rápido de aplicaciones-34 © 2010 CEFIRE: Actualización del profesorado
  • 40. Características de Grails Scaffolding “Generaciónautomática de códigoparalascuatrooperacionesbásicas de cualquieraplicación, que son la creación, lectura, ediciónyborrado” Groovy&Grails:desarrollo rápido de aplicaciones-35 © 2010 CEFIRE: Actualización del profesorado
  • 41. Características de Grails Scaffolding Clase de dominio Groovy&Grails:desarrollo rápido de aplicaciones-36 © 2010 CEFIRE: Actualización del profesorado class Libro{ String titulo static constraints = { title(blank:false) } }
  • 42. Características de Grails Scaffolding dinámico Controlador de la clase Libro Vistas de la clase Libro: creadas al vuelo Groovy&Grails:desarrollo rápido de aplicaciones-37 © 2010 CEFIRE: Actualización del profesorado class LibroController{ def scaffold = Libro }
  • 43. Características de Grails Scaffolding estático Controlador de la clase Libro Groovy&Grails:desarrollo rápido de aplicaciones-38 © 2010 CEFIRE: Actualización del profesorado grails generate-all Libro class LibroController{ def index = {…} def list = {…} def show = {…} def create = {…} def save = {…} …. }
  • 44. Características de Grails Scaffolding estático Vistas de la clase Libro · create.gsp · edit.gsp · list.gsp · show.gsp Groovy&Grails:desarrollo rápido de aplicaciones-39 © 2010 CEFIRE: Actualización del profesorado grails generate-all Libro
  • 45. Características de Grails Tests Tests unitarios Tests de integración Tests funcionales Groovy&Grails:desarrollo rápido de aplicaciones-40 © 2010 CEFIRE: Actualización del profesorado
  • 46.
  • 49. Restricciones en las propias clases de dominioGroovy&Grails:desarrollo rápido de aplicaciones-41 © 2010 CEFIRE: Actualización del profesorado
  • 50. Características de Grails Plugins Seguridad AJAX Realización de tests Búsqueda Informes Groovy&Grails:desarrollo rápido de aplicaciones-42 © 2010 CEFIRE: Actualización del profesorado
  • 51. Ejemplosdesarrolladoscon Grails Jobsket (http://www.jobsket.com) Uifi (http://www.uifi.es) Aloja (http://www4.uc3m.es/aloja) ManagerT1 (http://www.managert1.com) Groovy&Grails:desarrollo rápido de aplicaciones-43 © 2010 CEFIRE: Actualización del profesorado
  • 52. Enlaces de interés http://groovy.codehaus.org http://grails.org http://www.escueladegroovy.com http://www.jtech.ua.es/grails Groovy&Grails:desarrollo rápido de aplicaciones-44 © 2010 CEFIRE: Actualización del profesorado
  • 53. Bibliografía Groovy in Action(Manning) Beginning Groovy and Grails (Apress) Grails, a quick start guide (Pragmatic programmers) Groovy&Grails:desarrollo rápido de aplicaciones-45 © 2010 CEFIRE: Actualización del profesorado
  • 54. Contacto http://www.frangarcia.net fgarciarico@gmail.com http://www.twitter.com/frangarcia http://www.linkedin.com/in/frangarcia Groovy&Grails:desarrollo rápido de aplicaciones-46 © 2010 CEFIRE: Actualización del profesorado

Notas del editor

  1. - Paraquealgo se autodenominecomo genial, tienequeestarmuyseguro de simismo, al igualquealguiencuando le pone supropionombre a unaempresao un producto. Hay más de 100 lenguajesque se puedenejecutar en la Máquina Virtual de Java. Fuente: http://en.wikipedia.org/wiki/List_of_JVM_languages. Ágil porque nos ahorra mucha de la verborrea que siempre tiene Java y dinámico porque su tipado de datos es dinámico, es decir, es Groovy quien se encarga de elegir que tipo de datos es cada objeto de nuestras aplicaciones, aunque si lo deseamos, podemos especificárselo nosotros mismos.
  2. - Cuandovemosunaclaseo un script en Groovy, detectaremossusimilitud con Java, aunque también notaremos como se agiliza el código- Se puededecirque Groovy esunasuperclase de Java, puestoquepuedeutilizartodaslascaracterísticas de Java junto con algunasmáspropias de Groovy- Uno de los aspectosquemásrechazan de Java muchosdesarrolladoresessuverborrea en determinadasocasionesy se necesitademasiadocódigoparahacermuypoco.
  3. A los programadores Java, puestoque en el fondo Groovy es JavaA los programadores de scripts, puestoquees un lenguajemuyexpresivoyquepuedeconseguir mucho con muypococódigo, algoque a estetipo de desarrolladores les encanta.A los programadoreságilesyextremosyaquepuedenimplementarfácilmentesusteorias (SCRUM, XP)
  4. En Java, un simple programaqueimprima el típicoHolaMundo, suponeescribirmuchaslíneas de código. En Groovy se evita mucho de estecódigoparaconseguir lo mismo.Al evitarestecódigo “innecesario”, se aumenta la expresividad del lenguaje, puestoque con menos se dice másGroovy importaautomáticamente los paquetesgroovy.lang.*, groovy.util.*, java.lang.*, java.util.*, java.net.* yjava.io.*, asícomolasclasesjava.Math.BigIntegeryjava.Math.BigDecimal, asíquesiempre vas a poderutilizartodasestasclases sin necesidad de queseanimportadossuspaquetes al inicio del programa. Estotambiénesdiferente a Java, dondesólo se importaautomáticamente el paquetejava.lang.*.
  5. Esta sería una típica definición de una clase en Groovy con su getter y su setter. Notamos la ausencia de puntos y comas. Ya empezamos a ahorrarnos código innecesario
  6. Además de las clases en Groovy, también podemos tener scripts dentro de las mismas clases para realizar determinadas acciones sin necesidad de tener un método main. En caso de que necesitemos pasar argumentos a nuestro código Groovy.
  7. Este sería un bean en Java que define la clase Libro con una única propiedad, sobre el cual se definen sus getters y sus setters
  8. Este es el mismo bean en Groovy. En Groovy si tenemos una propiedad pública, automáticamente se crea el getter y el setter de dicha propiedad. En esta ocasión, si no le indicamos nada a la propiedad titulo, esta se configura automáticamente como privada, sin embargo, se creará como públicos sus métodos getter y setter.
  9. Estoque los programadores LAMPven normal, en Java no estan obvio y suele necesitarse mucho código para conseguir lo mismo. Si utilizamos comillas dobles, no es necesario escapar en las cadenas de texto.
  10. Groovy es un lenguaje que implementa un tipado dinámico de datos. Esto consiste en que es Groovy quien decide (si el programador no indica otra cosa diferente) que tipo de datos es una variable.
  11. Como vemos en el anterior código, en las dos primeras declaraciones de variables, dejamos que sea Groovy quien se encargue de asignarle el tipo de datos a las variables a y b, mientras que en las dos segundas le especificamos un tipo de datos primitivo aunque sabemos que Groovy lo va a tratar como tipo de dato referencia.Por último, en las dos últimas especificamos directamente el tipo de dato referencia que estamos definiendo
  12. Groovy hereda de Java los típicos if-else, while, switch y try-catch-finally de Java, pero modifica la forma en la que se implementan los bucles for. Cualquier variable que sea iterable va a poder ser utilizada en un bucle for
  13. El programador se olvida de determinados aspectos de configuración, siempre que sigan las convenciones establecidas por los desarrolladores.
  14. Comentarque en la versión 1.2 se añade la posibilidad de utilizar Tomcat comocontenedorde aplicaciones. Hacer hincapie en que no es único sobre el que funcionarán nuestras aplicaciones hechas en Grails, sino que simplemente es este el que viene en la distribución de Grails para ejecutar nuestra aplicación
  15. Comentar los tres niveles por defecto con los que viene Grails, (desarrollo, test y producción) y que posteriormente veremos un ejemplo del fichero de configuración del acceso a la base de datos
  16. Comentar la existenciatanto del scaffolding estáticocomoel dinámico. Comentar que posteriormente veremos en funcionamiento el scaffolding en Grails. Gracias a este scaffolding, Grails genera automáticamente tanto los métodos de los controladores, como las vistas para realizar las operaciones a partir de una clase de dominio.
  17. Comentar la existenciatanto del scaffolding estáticocomoel dinámico. Comentar que posteriormente veremos en funcionamiento el scaffolding en Grails. Gracias a este scaffolding, Grails genera automáticamente tanto los métodos de los controladores, como las vistas para realizar las operaciones a partir de una clase de dominio.
  18. Comentar que los métodos del controlador de la clase Libro son los que hay en una plantilla de Grails y que pueden ser modificados fácilmente por nosotros para realizar una serie de cambios y así poder crear la máquina de crear aplicaciones.
  19. Comentar la existenciatanto del scaffolding estáticocomoel dinámico. Comentar que posteriormente veremos en funcionamiento el scaffolding en Grails. Gracias a este scaffolding, Grails genera automáticamente tanto los métodos de los controladores, como las vistas para realizar las operaciones a partir de una clase de dominio.
  20. Comentar la existenciatanto del scaffolding estáticocomoel dinámico. Comentar que posteriormente veremos en funcionamiento el scaffolding en Grails. Gracias a este scaffolding, Grails genera automáticamente tanto los métodos de los controladores, como las vistas para realizar las operaciones a partir de una clase de dominio.
  21. Los tests unitarios son aquellos que comprueban la validez de nuestras clases sin tener en cuenta las relaciones con el resto del sistema (otras clases, sistema de ficheros, conexiones de red, etc)Los tests de integración comprueban la validez de nuestras clases cuando se relacionan con el resto del sistema (otras clases, sistema de ficheros, conexiones de red, etc)Los tests funcionales comprueban la funcionalidad de nuestra aplicación. Selenium y Canoo son dos frameworks que nos permitirán desarrollar este tipo de tests
  22. El mapeo objeto-relacional nos permite convertir datos obtenidos de una base de datos relacional para poder trabajar con los paradigmas de los lenguajes orientados a objetos
  23. Comentar la comunidadcadavezmásgrande de pluginsdesarrolladosporlos usuarios. Hay cerca de 350 plugins disponibles para la comunidad de desarrolladores Grails. Este número sigue en aumento.